/**
 * 
 * @param {*} vm Vue 实例
 * @param {*} tag 标签
 * @param {*} data 标签对应的属性
 * @param {*} children 该标签下的子元素
 * @param {*} key 该标签的 key
 * @param {*} text 该标签的文本
 * @returns 
 */
function vnode(vm, tag, data, children, key, text) {
    // 这是虚拟节点的信息，可以自定义其他的属性信息，不一定都是语法规定的
    return {
        vm,
        tag,
        data,
        children,
        key,
        text,
        // ...
    }
}

/**
 * 
 * @param {*} vm Vue 实例
 * @param {*} tag 可以显示到页面的标签
 * @param {*} data 可以显示到页面的标签的属性 props
 * @param  {...any} children 可以显示到页面的该标签的子元素
 * @returns 
 */
export function createElemet(vm, tag, data = {}, ...children) {
    // console.log('createElemet')
    return vnode(vm, tag, data, children, data.key, null);
}

/**
 * 
 * @param {*} vm Vue 实例
 * @param {*} text 可以显示到页面的字符串文本
 * @returns 
 */
export function createTextVNode(vm, text) {
    // console.log('createTextVNode', text)
    return vnode(vm, null, null, null, null, text);
}